#Boa:Dialog:Dialog1
# -*- coding: UTF-8 -*-

import wx,base64
import wx.lib.buttons
from subprocess import Popen

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1BTN_VALIDER, wxID_DIALOG1LBL_GROUPE, 
 wxID_DIALOG1LBL_SERVEUR, wxID_DIALOG1TXT_GROUP, wxID_DIALOG1TXT_SERVEUR, 
] = [wx.NewId() for _init_ctrls in range(6)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt,adrserveur,Ngroupe):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(521, 317), size=wx.Size(351, 235),
              style=wx.DEFAULT_DIALOG_STYLE, title='Informations requises')
        self.SetClientSize(wx.Size(335, 199))
        self.SetToolTipString('')
        self.Show(True)

        self.txt_serveur = wx.TextCtrl(id=wxID_DIALOG1TXT_SERVEUR,
              name='txt_serveur', parent=self, pos=wx.Point(88, 56),
              size=wx.Size(176, 21), style=0, value=adrserveur)
        self.txt_serveur.SetToolTipString("Entrez l'adresse du serveur")
        self.txt_serveur.SetMaxLength(20)

        self.txt_group = wx.TextCtrl(id=wxID_DIALOG1TXT_GROUP, name='txt_group',
              parent=self, pos=wx.Point(88, 104), size=wx.Size(176, 21),
              style=0, value=Ngroupe)
        self.txt_group.SetToolTipString('Entrez le nom du groupe')

        self.lbl_groupe = wx.StaticText(id=wxID_DIALOG1LBL_GROUPE,
              label='Nom du groupe:', name='lbl_groupe', parent=self,
              pos=wx.Point(40, 80), size=wx.Size(78, 13), style=0)

        self.lbl_serveur = wx.StaticText(id=wxID_DIALOG1LBL_SERVEUR,
              label='Adresse du serveur:', name='lbl_serveur', parent=self,
              pos=wx.Point(40, 32), size=wx.Size(99, 13), style=0)

        self.btn_valider = wx.Button(id=wxID_DIALOG1BTN_VALIDER,
              label='Valider', name='btn_valider', parent=self,
              pos=wx.Point(128, 152), size=wx.Size(75, 23), style=0)
        self.btn_valider.SetToolTipString('Enregistrer les informations')
        self.btn_valider.SetHelpText('')
        self.btn_valider.Bind(wx.EVT_BUTTON, self.OnBtn_validerButton,
              id=wxID_DIALOG1BTN_VALIDER)
        self.btn_valider.Bind(wx.EVT_KEY_DOWN, self.OnBtn_validerKeyDown)

    def __init__(self, parent,ipserveur='',nomgroupe=''):
        self._init_ctrls(parent,ipserveur,nomgroupe)

    def OnBtn_validerButton(self, event):
        # on verifie que les informations ont bien ete rentrees
        if (self.txt_serveur.Value == '') or (self.txt_group.Value == ''):
            wx.MessageBox(_("Merci de remplir des deux zones de texte"))
        # on verifie ensuite que le serveur repond au ping
        elif self.Ping_Serv()!= 0:
            wx.MessageBox(_("Le serveur semble injoignable\nVerifiez que vous avez rentre la bonne adresse\n et que votre connexion internet est active."))
                
        else:        
            user = base64.encodestring(self.txt_group.GetValue())
            
            chaine = '<?xml version="1.0" encoding="iso-8859-15"?>\n'
            chaine += '<root>\n'
            chaine += '<User>\n'
            chaine += user
            chaine += '</User>\n'
            chaine += '<ip>'+self.txt_serveur.GetValue()+'</ip>\n'
            chaine += '<option> -rltgoD --delete-after -z </option>\n</root>'
                          
            fichierDeConf = open('conf/Conf_Rsync.xml','w')
            fichierDeConf.write(chaine)
            fichierDeConf.close()
            
            self.Close()

    
    def OnBtn_validerKeyDown(self, event):
        self.OnBtn_validerButton(event)
    
    def Ping_Serv(self):
        '''Fonction de ping du serveur contenu dans le fichier ini'''
        cmd = 'ping -c 1 %s' % (self.txt_serveur.Value)
        Errno = Popen (cmd,shell = True).wait()
        return Errno
